package com.xbongbong.paas.data.service;

import com.xbongbong.paas.domain.entity.PaasFormDataEntity;
import com.xbongbong.paas.field.FieldAttrEntity;
import com.xbongbong.paas.pojo.dto.FormDataAddDTO;
import com.xbongbong.paas.pojo.dto.FormUpdateDTO;
import com.xbongbong.paas.pojo.dto.SerialNoListDTO;
import com.xbongbong.paas.pojo.vo.SerialNoListVO;
import com.xbongbong.paas.pojo.vo.SerialNoSetVO;
import com.xbongbong.paas.toolbox.exception.XbbException;

import java.util.List;
import java.util.Map;

/**
 * @author: wufeng
 * @date: 2018/9/12 17:06
 * @desrcption: 流水号操作
 */
public interface SerialNoService {

    /**
     * 获取流水好列表
     * @param serialNoListDTO
     * @return
     * @throws XbbException
     */
    SerialNoListVO getSerialNoList(SerialNoListDTO serialNoListDTO) throws XbbException;

    /**
     * 设置流水号
     * @param formUpdateDTO
     * @return
     * @throws XbbException
     */
    SerialNoSetVO setSerialNo(FormUpdateDTO formUpdateDTO) throws XbbException;




    /**
     * 开启严控后流水号生成
     * @param formDataSaveDTO
     * @param corpid
     * @param businessType
     * @param explainMap
     * @return
     * @throws XbbException
     */
    PaasFormDataEntity setSerialNo(FormDataAddDTO formDataSaveDTO, String corpid, Integer businessType, Map<String, FieldAttrEntity> explainMap) throws XbbException;
    /**
     * 生成流水号
     * @param corpid 公司id
     * @param formId 表单id
     * @param fieldAttrEntity 字段实体
     * @return java.lang.String
     * @throws XbbException
     * @author zcp
     * @since v1.0
     * @version v1.0
     */
    String getSerialNo(String corpid, Long formId, FieldAttrEntity fieldAttrEntity) throws XbbException;

    /**
     * 严控模式获取流水号
     * @param formDataSaveDTO 新建接口的dto
     * @param corpid 公司id
     * @param fieldAttrEntity 流水号字段
     * @return 流水号
     * @throws XbbException
     */
    String getSerialNo(FormDataAddDTO formDataSaveDTO, String corpid, FieldAttrEntity fieldAttrEntity) throws XbbException;

}
